#!/bin/bash
# 描述: shell 部署k8s的入口脚本文件
# 版本: v0.1
# 日期: 20230723
# 作者: 肖晨光

# 加载项目配置属性信息
root_dir=$(dirname $PWD)
[ -f $root_dir/conf/config ] && source $root_dir/conf/config || exit

# 加载功能函数
source ${subfunc_dir}/${base_func_menu}
source ${subfunc_dir}/${base_func_usage}
source ${subfunc_dir}/${base_func_exec}

# 基础内容
array_target=(基础 内核 容器 仓库 高可用 初始化 管理 退出)


# 主函数区域
main(){
  read -p "请输入kubernetes集群主机的操作系统类型(centos-默认|ubuntu)" os_type
  os_type=${os_type:-centos}
  echo "你的操作系统类型是: ${os_type}"
  while true
  do
    manager_menu
    read -p "请输入你要操作的选项id值: " target_id
	if [ ${#array_target[@]} -ge ${target_id} ]; then
		case ${array_target[$target_id-1]} in 
			"基础") 
			echo -e "\e[33m开始执行基础环境部署...\e[0m"
			if [ -f "${scripts_dir}/${base_env_scripts}"  ];then
				/bin/bash "${scripts_dir}/${base_env_scripts}" "${os_type}"
			else 
				echo -e "\e[31m脚本${base_env_scripts}文件不存在,请确认!\e[0m"        
			fi    
			;;
  			"内核")
			echo -e "\e[33m开始执行k8s内核参数部署...\e[0m"
			if [ -f "${scripts_dir}/${base_kernel_scripts}"  ];then
				read -p "请输入执行k8s内核参数调整的主机列表范围(示例:{30-36}): " num_list
				ip_list=$(create_ip_list "${target_net}" "${num_list}")
				scp_file ${ip_list} "${scripts_dir}/${base_kernel_scripts}" "/tmp/"
				for i in ${ip_list};
				do
					ssh "${login_user}"@"${i}" "/bin/bash /tmp/${base_kernel_scripts}"
					echo -e "\e[32mk8s节点主机内核参数调整完毕\e[0m"
				done
			else 
				echo -e "\e[31m脚本${base_kernel_scripts}文件不存在,请确认!\e[0m"        
			fi    
			;;
        "容器")
          echo -e "\e[33m开始执行容器环境部署...\e[0m"
		  if [ -f "${scripts_dir}/${base_docker_scripts}"  ];then
			read -p "请输入执行docker安装的主机列表范围(示例:{30-36}): " num_list
			ip_list=$(create_ip_list "${target_net}" "${num_list}")
			scp_file ${ip_list} "${scripts_dir}/${base_docker_scripts}" "/tmp/"
			for i in ${ip_list};do
			ssh "${login_user}"@"${i}" "/bin/bash /tmp/${base_docker_scripts}"
			echo -e "\e[32mk8s节点主机docker环境部署完毕\e[0m"
			done
		  else
			echo -e "\e[31m脚本${base_docker_scripts}文件不存在,请确认!\e[0m"        
		  fi
		  echo -e "\e[33m开始执行cri服务软件的部署...\e[0m"
			if [ -f "${scripts_dir}/${base_cri_docker_scripts}" ]; then
				source "${scripts_dir}/${base_cri_docker_scripts}" "${ip_list}"
		  	else
		  	echo -e "\e[31m脚本 ${base_cri_docker_scripts} 文件不存在，请确认!!\e[0m"
		  	fi
		  	;;
        "仓库")
          echo -e "\e[33m开始执行容器镜像仓库部署...\e[0m";;
        "高可用")
          echo -e "\e[33m开始执行高可用环境部署...\e[0m";;
        "初始化")
          echo -e "\e[33m开始执行k8s初始化...\e[0m";;
        "管理")
          echo -e "\e[33m开始执行k8s环境管理...\e[0m";;
        "退出")
          echo -e "\e[33m退出...\e[0m"
      exit;;
      esac
    else
      Usage
    fi
  done

}

# 调用区域
main
